﻿using System;
using System.Collections.Generic;

namespace OhioState.Math.ThreeDimensional
{
    public class Point : Vector3
    {
        public Point(float x, float y, float z)
            : base(x, y, z)
        {
        }
        public Point(Vector3 point)
            : base(point)
        {
        }
        public Point(float[] point)
            : base(point)
        {
        }
        public Point()
        {
        }
        public static implicit operator Vector4(Point point)
        {
            return new Vector4(point.x, point.y, point.z, 1);
        }
        //public static implicit operator Point(Vector3 point)
        //{
        //    return new Point(point.x, point.y, point.z);
        //}
    }

    public class Direction : Vector3
    {
        public Direction(float x, float y, float z)
            : base(x, y, z)
        {
        }
        public Direction(Vector3 point)
            : base(point)
        {
        }
        public Direction(float[] point)
            : base(point)
        {
        }
        public Direction()
        {
        }
        public static implicit operator Vector4(Direction direction)
        {
            return new Vector4(direction.x, direction.y, direction.z, 0);
        }
    }

    public class Vertex
    {
        public Point Position { get; set; }
        public Direction Normal { get; set; }
    }

    public class VertexWithTextures
    {
        public Point Position { get; set; }
        public Direction Normal { get; set; }
        public IList<Point> TextureCoords { get; set; }
    }
}
